package com.java.io.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.Reader;

public class ReadFile {

	/*
	 * 字节流>>
	 * 读取文件内容
	 */
//	public static void main(String[] args) {
//		try {
//			String filePath = "D:" + File.separator + "fileTest.txt";
//			File f = new File(filePath);
//			if(!f.exists()){
//				System.out.println("要读取的文件不存在！");
//				return;
//			} 
//			InputStream in = new FileInputStream(f);
//			// 指定空间，有可能小，有可能大，多以使用方式2
////			byte[] b = new byte[1024];  //1
////			byte[] b = new byte[(int)f.length()]; //2
//			// len-防止出现多余的空格
////			int len = in.read(b);
////			in.close();
////			System.out.println("result --- " + new String(b, 0, len));
//			
//			// 不知道文件大小时，就要判断是否读到了文件结尾
//			byte[] b = new byte[1024];
//			int count =0;  
//	        int temp=0; 
//	        // 读到文件末尾时，返回-1
//	        while((temp=in.read())!=(-1)){  
//	            b[count++]=(byte)temp;  
//	        }  
//	        in.close();  
//	        System.out.println("result --- " + new String(b));
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//	}
	
	/*
	 * 字符流>>
	 * 读取文件
	 */
	public static void main(String args[]) {
		try {
			String filePath = "D:" + File.separator + "lucene" + File.separator + "data" + File.separator +"2.txt";
			File f = new File(filePath);
			if(!f.exists()){
				System.out.println("要读取的文件不存在！");
				return;
			}
			char[] ch = new char[(int)f.length()];
			Reader r = new FileReader(f);
			//int count = r.read(ch); 
			// 最好使用循环的方式，因为往往不知道文件多大
			int temp=0;  
	        int count=0;  
	        while((temp=r.read())!=(-1)){  
	            ch[count++]=(char)temp;  
	        }  
	        r.close();  
	        System.out.println("读入的长度为：" + count);  
	        System.out.println("result --- " + new String(ch,0,count));  
	       // System.out.println(ch);
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}
